练习
(1)下面两个函数都存在错误,请指出这些错误。
static bool Write()
{
Console.WriteLine("Text output from function.");
}
static void MyFunction(string label, params int[] args, bool showLabel)
{
if (showLabel)
Console.WriteLine(label);
foreach (int i in args)
Console.WriteLine("{0}", i);
}
答案: 第一个函数的返回类型是bool,但不返回一个bool值。 第二个函数有一个params实参,但这个实参不在实参列表的末尾处。
(2)编写一个应用程序,该程序使用两个命令行参数,分别把值放在一个字符串和一个整型变量中,然后显示这些值。
答案:
static void Main(string[] args) { if(args.Length != 2) { Console.WriteLine("Two arguments required."); return; } string param1 = args[0]; int param2 = Convert.ToInt32(args[1]); Console.WriteLine("String parameter: {0}", param1); Console.WriteLine("Integer parameter: {0}", param2); } 注意这个答案包含的代码检查是否提供两个实参,本题没有这个要求,但在本题中进行检查是很合理的。
(3)创建一个委托,在请求用户输入时,使用它模拟 Console.ReadLine()
函数。
答案:
class Program { delegate string ReadLineDelegate(); static void Main(string[] args) { ReadLineDelegate readLine = new ReadLineDelegate(Console.ReadLine()); Console.WriteLine("Type a string:"); string userInput = readLine(); Console.WriteLine("You typed: {0}", userInput); } }
(4)修改下面的结构,使其包含一个返回订单总价格的函数。
struct order
{
public string itemName;
public int unitCount;
public double unitCost;
}
答案:
struct order { public string itemName; public int unitCount; public double unitCost; public double TotalCost() { return unitCount * unitCost; } }
(5)在 order
结构中添加另一个函数,使其返回如下所示的一个格式化的字符串(一行文本,以合适的值替换用尖括号括起来的斜体条目)。
Order Information: <unit count> <item name> items at $<unit cost> each,
total cost $<total cost>
答案:
struct order { public string itemName; public int unitCount; public double unitCost; public double TotalCost() { return unitCount * unitCost; } public string Info() { return "Order information: " + unitCount.ToString() + " " + itemName + " items at $" + unitCost.ToString() + " each, total cost $" + TotalCost().ToString(); } }
🔚